package com.yuke.cloud.service.pmc.service;

import com.yuke.cloud.common.core.support.IService;
import com.yuke.cloud.service.api.pmc.dto.ProdAttributeDto;
import com.yuke.cloud.service.api.pmc.dto.*;
import com.yuke.cloud.service.api.wmc.dto.StorageSpecInfoDto;
import com.yuke.cloud.service.pmc.dto.*;
import com.yuke.cloud.service.pmc.entity.ProdSpec;

import java.util.List;
import java.util.Map;


/**
 * Created by zys on 2018/09/30.
 */
public interface ProdSpecService extends IService<ProdSpec> {

    List<ProdSpecInfoAndPriceDto> getListRecommend(String longitude, String latitude);
    List<ProdSpecInfoDto> getSpecInfoBySpecIds(List<Long> specIds);
    List<ProdSpec> getEnableSpecByCategoryIds(List<Long> categoryIds);
    List<ProdSpecByCategoryDto> getSpecByCategoryId(Long categoryId, Long shopId);
    void deleteBySpecIds(String specIds);
    void isEnable(Long specId, Integer isEnable);
    void isEnableProduct(Long productId,Long specId,  Integer isEnable);
    List<ProdSpecInfoAndPriceDto> getAppSpecByCondition(ProdSpecInfoAndPriceDto prodSpecInfoAndPriceDto, Long shopId);
    //PmcSpecFeignApi
    ProdSpecInfoDto getSpecInfoBySpecId(Long specId);
    List<ProdSpecInfoDto> getSpecInfoDtosByCategoryId(Long categoryId);
    List<ProdSpecInfoDto> getSpecInfoDtosByCondition(ProdSpecInfoDto prodSpecInfoDto);
    Map<String, Integer> getPriceBySpecId(Long specId);
    List<ProdSpecInfoAndPriceDto> getSpecInfoDtosBySpecIds(List<Long> specIds);
    List<ProdSpecInfoDto> getSpecInfoListBySpecIds(List<Long> specIds);
    List<ProdSpecInfoDto> getSpecBySpecName(ProdSpecInfoDto prodSpecInfoDto);
    List<ProdSpecInfoDto> getBySpecName(ProdSpecInfoDto prodSpecInfoDto);
    int updateSpecStockPrice(ProdSpec entity);

    List<ProdBrandDto> getBrands(Long categoryId, Byte saleType, String keyWord);

    void updateSpecSaleCount(List<ProdSpecInfoDto> prodSpecInfoDtos);

    List<ProdSpecInfoAndPriceDto> getSpecBySpecIds(Long shopId, List<Long> specIds, Byte saleType);
    List<ProdMainAttrDetailDto> getMainAttribute(Long specId);
    ProdMainAttrDto getMainAttributeList(Long specId, Byte saleType);
    ProdSpecInfoAndPriceDto getSpecByMainAttribute(ProdMainAttrDto prodMainAttrDto, Byte saleType, Long shopId);
    List<ProdSpecInfoExDto> getSpecIds(ProdStorageDto prodStorageDto);

    List<ProdSpecInfoDto> getImportSpecId(String specName);

    void getSpecInfoExtra(Long shopId, List<ProdSpecInfoAndPriceDto> prodSpecInfoAndPriceDtos, Byte saleType);

    List<ProdSpecGoodsDto> getProdSpecGoods(ProdSpecGoodsDto prodSpecGoodsDto);

    List<ProdSpecGoodsInfoDto> findSpecAll(Long groupId);
    List<ProdAttributeDto> getFindProdAttributes(List<Long> specIds);

    int updateSpecCode(ProdSpec prodSpec);

    Boolean addProducRecording(String userId, String specId);

    List<StorageSpecInfoDto> getRecordingByUserId(String userId, String shopId);

    List<ProdSpecInfoDto> getStorageSpecInfoBySpecIds(List<Long> specIds);


    List<ProdSpecInfoDto> getSpecIdByCategoryId(ProdCategoryDto prodCategoryDto);

    List<ProdSpecApiDto> getSpecNameBySpecIds(List<Long> list);

    List<ProdSpecGoodsInfoDto> getSpecInfoBySpecCode(String specCode);

    List<ProdSpecApiDto> checkSpeCode(List<String> specCode);
}
